package com.rede.didiok.rank.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rede.didiok.common.dto.rank.MemberGradeDto;
import com.rede.didiok.rank.entity.MemberGradeEntity;

/**
 * 排行榜中的等级称号
 *
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-07-20 22:09:24
 */
public interface MemberGradeService extends IService<MemberGradeEntity> {


    /***************************** admin:start **************************/
    // region  didiok-admin

    /**
     * 获取榜单成员等级列表
     *
     * @param memberGradeDto
     * @return
     */
    public IPage<MemberGradeEntity> getPageList(MemberGradeDto memberGradeDto);

    /**
     * 新增榜单成员等级
     *
     * @param memberGradeDto
     */
    public String addMemberGrade(MemberGradeDto memberGradeDto);

    /**
     * 编辑榜单成员等级
     *
     * @param memberGradeDto
     */
    public String editMemberGrade(MemberGradeDto memberGradeDto);

    /**
     * 批量删除榜单成员等级
     *
     * @param memberGradeDtoList
     */
    public String deleteBatchMemberGrade(List<MemberGradeDto> memberGradeDtoList);

    // endregion
    /***************************** admin:end **************************/



    /***************************** web:start **************************/
    // region didiok-web

    /**
     * 获取全部榜单成员等级列表
     *
     * @return
     */
    List<MemberGradeEntity> getList();

    // endregion
    /***************************** web:end **************************/

    /**
     * 批量：根据等级id列表，获取等级信息
     * @param gradeIds
     * @return
     */
    List<MemberGradeEntity> getGradesByIds(List<Long> gradeIds);

    /**
     * 获取一个排序最高的标签
     *
     * @return
     */
    MemberGradeEntity getTopOne();

    /*********************************/

    /**
     * 删除和榜单有关的Redis缓存
     */
    void deleteRedisByMemberGrade();


}

